package com.tzjw.marketweixin.util;

import java.util.UUID;

/**
 * @author stone
 * @date 2023/03/17 19:48
 */
public class StringUtil {
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
    public static boolean isNull(String str) {
        return str == null;
    }
    public static boolean isNotNull(String str) {
        return str != null;
    }
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }

    /**
     * 生成唯一字符串
     * @since 2023/09/02 21:27
     * @author hadyen
     * @return java.lang.String
     */
    public static String generateUuid(){
        return UUID.randomUUID().toString().replaceAll("-", "");
    }

    /**
     * 生成规定位数的兑换码
     * @since 2023/09/03 21:40
     * @param nums 位数
     * @return 含有数字和全大写字母组成的字符串
     */
    public static String exchangeCode(int nums){
        return generateUuid().substring(0,nums).toUpperCase();
    }
    /**
     * 判断传进来的字符串是否是一个null或者是否是一个只有空白格的字符串或者是否是空字符串
     * @param str 传进来待判断的字符
     * @return boolean true- 是一个null或者是一个只有空白格的字符串或者是一个空字符串；
     *                 false- 既不是null也不是一个只有空格的字符串也不是一个空字符串
     * @author Xiaobin
     * @since 2023/09/05 14:31
     */
    public static boolean isStringABlankStringOrNull(String str) {
        return (str == null || str.trim().length() == 0);
    }

    /**
     * 判断一个字符串是否能转换成一个数值类型
     * @param str 传入的待判断的字符串
     * @return boolean true- 表示可以转成一个数值类型；false- 无法转换，会出错（字符串中有非数字字符）
     * @author Xiaobin
     * @since 2023/09/05 14:41
     */
    public static boolean canCastToNumber(String str){
        try {
            // 尝试将字符串转换为各种数值类型
            Double.parseDouble(str);
            Integer.parseInt(str);
            Long.parseLong(str);
            Float.parseFloat(str);

            // 如果没有抛出异常，说明可以转换为任何数值类型
            return true;
        } catch (NumberFormatException e) {
            // 转换失败，捕获异常，返回false
            return false;
        }
    }

}
